synapse - zmena servera na klienta

Otázka od: delphin@centrum.sk

5. 11. 2002 17:16

Zdravim !

.. ako vyriesit situaciu : mam PC1, PC2. Z PC1 potrebujem dostat
data na PC2. Urobim si z PC2 server, ktory nacuva na konekt z
PC1.. vzide problem - z PC1 nie je mozne konektnut sa na PC2
(connection timeout), preto potrebujem zmenit stav : z PC1 bude
server (nacuva na konekt) a z PC2 bude klient. PC2 sa v pohode
konektne na PC1.. mozem teda ziskat data z PC1... problem je v
tom, ze ako vyriesit tuto zmenu (prechod) stavu PC1 a PC2 klient-
>server, resp. server->klient...??

Pouzil som take nieco :
-vytvorim si socket Sock1 na PC1, dam konekt na PC2, zrusim
Sock1,dam vytvorit EchoServer1

-PC2 ma Echoserver2 z dema, v slucke po canread(1000) mu dam
Terminate, v onTerminate dam vytvorit Sock2, konekt na PC1 - cez
toto spojenie by sa malo komunikovat - tento ClientSock by mal
byt odchyteny v slucke EchoServer1, nic sa vsak neudeje, pripadne
to zdochyna na Acc.Violation.. co robim zle?? alebo ako to inac
vyriesit?

..ako zrusit TTCPEchoDaemon?.. ked dam

Echo := TTCPEchoDaemon.Create;
Echo.Free;

krici to AccessViolation a Win32 Error Code 5 - Pristup bol
odmietnuty..


Dik za kazdu pomoc

----------------------------------------------------------------
http://www.webpark.sk/novy-web.htm - Profesionálny webhosting

Odpovedá: Lukas Gebauer

6. 11. 2002 9:24

> .. ako vyriesit situaciu : mam PC1, PC2. Z PC1 potrebujem dostat
> data na PC2. Urobim si z PC2 server, ktory nacuva na konekt z
> PC1.. vzide problem - z PC1 nie je mozne konektnut sa na PC2
> (connection timeout), preto potrebujem zmenit stav : z PC1 bude
> server (nacuva na konekt) a z PC2 bude klient. PC2 sa v pohode
> konektne na PC1.. mozem teda ziskat data z PC1... problem je v
> tom, ze ako vyriesit tuto zmenu (prechod) stavu PC1 a PC2 klient-
> >server, resp. server->klient...??

neco takoveho jako prepinani ze stavu server dostavu klienta neni
dobre! Svedci to o nepromyslenem designu sitove apliakce. Tudy ne!
Kdyz je nekdo server, ma jim byt po celou funckni dobu. Ma-li byt
nekdo klient, ma jim byti po celou funkcni dobu. predstav si situaci,
kdy se potrebujes s klientem pripojit... jak budes zjistovat, ze ten
druhy pocitac je zrovna server nebo klient???

Rodina protokolu TCP/IP predstavuje hned nekolik ruznych protokolu o
ruznych vlastnotech, kazdy je vhodny na reseni jinych uloh.

Pokud potrebujes delat to co jsi popsal, svedci to o tom, ze bud to
jde delat mnohem jednoduseji (fakt nevim, proc potrebujes prepinat
server na klient...), nebo ze jsi zvolil nevhodny protokol.

programovani sitovych aplikace neni sranda! na to abys byl uspesny,
tak o tom jak to funguje MUSIS neco vedet. Urcite na to existuji
chytre knihy. Doporucuji si nejdrive neco fungovani TCP/IP precist a
az pak se poustet do programovani.

Je to jako s autem! Dostanes-li dobre auto, jeste to neznamena, ze
jej umis ridit. Nejprve ti musi byt vysvetleno, k cemu slouzi volant,
radici paka, spojka, brzda a plyn.. a az pak se muzes pokusit ridit.
(a na zacatku ti to nejspise moc nepujde...)

U TCP/IP je to stejne.. nejprve musi mit potuchu o tom, jak to
funguje, co se na co pouziva, a az pak teprve to muzes zacit zkosuet
programovat.  



-- Lukas Gebauer.

E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Synapse Delphi and Kylix TCP/IP Lib.

Odpovedá: delphin@centrum.sk

6. 11. 2002 10:01

.. no dobre, predstav si situaciu : na lokalnom pocitaci mam
pripojeny fiskal, vo W2k cez klienta sluzby Terminal Services sa
pripojim na nejaky vzdialeny pocitac, kde bezi nejaky ekon.soft,
z casu na cas chce ten uzivatel na lokalnom fiskali vytlacit
blocek..
..ako vyriesit tuto situaciu, ked zjavne lokalny pocitac musi byt
najskor v stave server, ked musi nacuvat - a zistit, ze prave
teraz chce ten uzivatel tlacit blocek (chce poslat data o
blocku).. lenze, vzdialeny pocitac sa nemoze konektnut na lokalny
pocitac (connection timeout), ale lokalny pocitac vie
zaregistrovat tento pokus, a prave v tejto chvili si menia ulohy,
vzdialeny musi nacuvat kedy sa z lokalneho chce nadviazat
spojenie a lokalny toto spojenie skutocne nadviaze a potom sa uz
daju obojsmerne prenasat data...

.. tot realna situacia.. skus mi teda, prosim ta, napisat akym
smerom sa uberat, koho v tejto situacii pokladat za server a koho
za klienta, s obmedzenim, ze zo vzdialeneho pocitaca nemozes
nadviazat spojenie, aky protokol by na to bol najvhodnejsi a
pod...
dik za kazdu podnetnu radu



Lukas napisal :
Pokud potrebujes delat to co jsi popsal, svedci to o tom, ze bud
to
jde delat mnohem jednoduseji (fakt nevim, proc potrebujes prepinat
server na klient...), nebo ze jsi zvolil nevhodny protokol.

----------------------------------------------------------------
http://www.webpark.sk/novy-web.htm - Profesionálny webhosting

Odpovedá: Ludek ZITA

6. 11. 2002 10:23


----- Original Message -----
From: <delphin@centrum.sk>


> pripojeny fiskal, vo W2k cez klienta sluzby Terminal Services sa
> pripojim na nejaky vzdialeny pocitac, kde bezi nejaky ekon.soft,
> z casu na cas chce ten uzivatel na lokalnom fiskali vytlacit
> blocek..

Ahoj,
jestli se nepletu, tak soucasti nastaveni klienta Terminal Services je mimo
jine i mapovani portu a tiskaren, takze proste a jednoduse tisknes uplne
stejne jako by ti ten ekon. soft bezel primo na tvy stanici.

Ludek

Odpovedá: delphin@centrum.sk

6. 11. 2002 11:07

.. no, mam pred sebou vlastnosti pripojenia, su tu 3 zalozky :
Obecne, Moznosti pripojeni, Program... nikde nie su nastavenia
ohladom mapovania portu a tlaciarni..



>Ahoj,
>jestli se nepletu, tak soucasti nastaveni klienta Terminal
>Services je mimo
>jine i mapovani portu a tiskaren, takze proste a jednoduse
>tisknes uplne
>stejne jako by ti ten ekon. soft bezel primo na tvy stanici.

>Ludek


----------------------------------------------------------------
http://www.webpark.sk/novy-web.htm - Profesionálny webhosting

Odpovedá: Lukas Gebauer

6. 11. 2002 11:12

nejak tomu nerozumim.. proc tohle vsechno musi byt na tom stejnem
spojeni?

nebylo by rozumnejsi jit na to napriklad tak, ze tyhle dve veci od
sebe oddelis? na jedne strane budes mit server ja jednom portu.. a
druhy pocitac se bude na tento port pripojovat. A ten druhy pocitac
bude mit v sobe take server, ale na jinem portu.. a prvni pocitac se
bude na tento jiny port dle potreby pripojovat.

Program bude serverem a klientem zaroven, bez prepinani.

Tedy rozdeleni na server-client, neni z hlediska pocitace, ani z
hlediska programu, ale pouze z hlediska toho konkreniho spojeni.

V jednom programu muzes mit vice serveru a vice klientu zaroven vedle
sebe. neni potreba se pokouset se mezi temito stavy nejak prepinat.

Nevim, jestli jsem tvuj problem poradne pochopil, ale ty mas jeden
pocitac, pres ktery maji ostatni pocitace tisknout blocky, a zaroven
potrebujes z tohoto pocitace nejak ovladat ty ostatni pocitace?

Pak si to rika o jeden server, ktery nedela nic jineho, nez od
ostatnich pocitacu prijima pozadavky na tisk a obhospodaruje je.

A na kazdem pocitaci bezi DALSI server, na ktery se pripojujes, kdyz
ty pocitac chces nejak ovladat.

Take je dobre zvazit, jestli na neco nepouzit UDP protokol. U tohoto
protokolu neexistuje spojeni, jen si posilas kratke (rozumej max.
kilobajty az desitky kilobytu...) zpravy. Ovsem ma to take sve
uskali!

Vse zalezi na tom, jake informace potrebujes prenaset na jednotlive
ulohy.

To s tim,z e ze vzdaleneho pocitace se nemuzes pripojit... to nejak
nechapu. Pokud se nemuzes ze zvdaleneho pocitace pripojit, ale ty tam
ano (treba je tam tak nastaveny firewall), pak ti pokus o prepnuti
smeru nic nevyresi!

nejak nechapu, proc proste neotevres to spojeni, a pak obousmerne
neprenasis ty data co potrebujes. (musis si na to ale napsat nejaky
vhodny komunikacni protokol...) Proste z lokalniho se pripoj na ty
vzdalene, vznikne komunikani kanal, kterym ti muze ten vzdaleny
posilat pozadavk na tisk, ne?

Porad nechapu, kde je problem, a proc je potreba prepinat ulohy. U
TCP je sice jeden server a druhy klient, ale jen z hlediska
navazovani spojeni. jakmile se spoji, zvnikne 'virtualni drat',
kterym si muzes posilat co chces a jak chces! Je pak jedno, kdo
posila prikazy a kdo je plni. Je to proste drat, zajistujici prenos
dat. nic vic.


> .. no dobre, predstav si situaciu : na lokalnom pocitaci mam
> pripojeny fiskal, vo W2k cez klienta sluzby Terminal Services sa
> pripojim na nejaky vzdialeny pocitac, kde bezi nejaky ekon.soft,
> z casu na cas chce ten uzivatel na lokalnom fiskali vytlacit
> blocek..
> ..ako vyriesit tuto situaciu, ked zjavne lokalny pocitac musi byt
> najskor v stave server, ked musi nacuvat - a zistit, ze prave teraz
> chce ten uzivatel tlacit blocek (chce poslat data o blocku).. lenze,
> vzdialeny pocitac sa nemoze konektnut na lokalny pocitac (connection
> timeout), ale lokalny pocitac vie zaregistrovat tento pokus, a prave v
> tejto chvili si menia ulohy, vzdialeny musi nacuvat kedy sa z
> lokalneho chce nadviazat spojenie a lokalny toto spojenie skutocne
> nadviaze a potom sa uz daju obojsmerne prenasat data...
>
> .. tot realna situacia.. skus mi teda, prosim ta, napisat akym
> smerom sa uberat, koho v tejto situacii pokladat za server a koho za
> klienta, s obmedzenim, ze zo vzdialeneho pocitaca nemozes nadviazat
> spojenie, aky protokol by na to bol najvhodnejsi a pod... dik za kazdu
> podnetnu radu


-- Lukas Gebauer.

E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Synapse Delphi and Kylix TCP/IP Lib.

Odpovedá: ing. Jan Fiala

6. 11. 2002 11:09

Jestli to nebude tim, ze tyto veci se nastavuji na serveru u
uzivatele....

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

6.11.2002 delphin@centrum.sk:
> .. no, mam pred sebou vlastnosti pripojenia, su tu 3 zalozky :
> Obecne, Moznosti pripojeni, Program... nikde nie su nastavenia
> ohladom mapovania portu a tlaciarni..